import Vue from 'vue'
import Vuex from 'vuex'

import app from '@/store/modules/app';
import home from '@/store/modules/home'
import commodity from '@/store/modules/commodity'
import message from '@/store/modules/message'
import user from '@/store/modules/user'

Vue.use(Vuex);

export default new Vuex.Store({
	modules: {
		app,
		home,
		commodity,
		message,
		user
	},
	// 存放状态
	state:{
	},
	// 可以认为是 store 的计算属性,get方法
	getters: {
		home: state => state.home,
		commodity: state => state.commodity,
		message: state => state.message,
		user: state => state.user
	},
	/*必须是同步函数
	 * Vuex中store数据改变的唯一方法就是mutation
	 * mutations 里面装着改变数据的方法集合，处理数据逻辑的方法全部放在 mutations 里，使数据和视图分离。
	 *
	 * Vuex 中的 mutation 非常类似于事件：每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。
	 * 这个回调函数就是我们实际进行状态更改的地方，并且它会接受 state 作为第一个参数
	 * */
	mutations: {
	},
	/* action 可以包含任意异步操作, actions 通过 store.dispatch 方法触发
	 * action 提交的是 mutation，通过 mutation 来改变 state
	 *
	 * action 函数接受一个与 store 实例具有相同方法和属性的 context 对象，
	 * 因此你可以调用 context.commit 提交一个 mutation，
	 * 或者通过 context.state 和 context.getters 来获取 state 和 getters
	 * */
	actions: {
	}
})
